// 错误处理中间件
export const errorHandler = (err, req, res, next) => {
  console.error('❌ 错误详情:', err);
  
  // 默认错误状态码和消息
  let statusCode = 500;
  let message = '服务器内部错误';
  
  // 根据错误类型设置不同的状态码和消息
  if (err.name === 'ValidationError') {
    statusCode = 400;
    message = '请求参数验证失败';
  } else if (err.name === 'UnauthorizedError') {
    statusCode = 401;
    message = '未授权访问';
  } else if (err.name === 'ForbiddenError') {
    statusCode = 403;
    message = '禁止访问';
  } else if (err.name === 'NotFoundError') {
    statusCode = 404;
    message = '请求的资源不存在';
  } else if (err.code === 'ECONNREFUSED') {
    statusCode = 503;
    message = '外部服务不可用';
  } else if (err.code === 'ETIMEDOUT') {
    statusCode = 504;
    message = '请求超时';
  }
  
  // 如果是已知的业务错误，使用自定义消息
  if (err.message && err.message !== 'Internal Server Error') {
    message = err.message;
  }
  
  // 发送错误响应
  res.status(statusCode).json({
    success: false,
    error: {
      message,
      statusCode,
      timestamp: new Date().toISOString(),
      path: req.path,
      method: req.method
    }
  });
};
